<!-- HTML header for doxygen 1.8.3.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>AngelScript: asIScriptContext Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="test/javascript" src="touch.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="aslogo_small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">AngelScript
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classas_i_script_context.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="classas_i_script_context-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">asIScriptContext Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>The interface to the virtual machine.  
 <a href="classas_i_script_context.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Memory management</div></td></tr>
<tr class="memitem:a5e24f4cb5773f732a1d46b818d963a1d"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a5e24f4cb5773f732a1d46b818d963a1d">AddRef</a> () const =0</td></tr>
<tr class="memdesc:a5e24f4cb5773f732a1d46b818d963a1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Increase reference counter.  <a href="#a5e24f4cb5773f732a1d46b818d963a1d">More...</a><br/></td></tr>
<tr class="separator:a5e24f4cb5773f732a1d46b818d963a1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1b13a5f3e58627e9ff4300c0c6f0f3cf"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a1b13a5f3e58627e9ff4300c0c6f0f3cf">Release</a> () const =0</td></tr>
<tr class="memdesc:a1b13a5f3e58627e9ff4300c0c6f0f3cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Decrease reference counter.  <a href="#a1b13a5f3e58627e9ff4300c0c6f0f3cf">More...</a><br/></td></tr>
<tr class="separator:a1b13a5f3e58627e9ff4300c0c6f0f3cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Miscellaneous</div></td></tr>
<tr class="memitem:a07f12016c5435aec5b63449abb6e4d8d"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_engine.html">asIScriptEngine</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a07f12016c5435aec5b63449abb6e4d8d">GetEngine</a> () const =0</td></tr>
<tr class="memdesc:a07f12016c5435aec5b63449abb6e4d8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the engine.  <a href="#a07f12016c5435aec5b63449abb6e4d8d">More...</a><br/></td></tr>
<tr class="separator:a07f12016c5435aec5b63449abb6e4d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Execution</div></td></tr>
<tr class="memitem:a43976f42dfc6c1af23e132d36265173a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a43976f42dfc6c1af23e132d36265173a">Prepare</a> (<a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *func)=0</td></tr>
<tr class="memdesc:a43976f42dfc6c1af23e132d36265173a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares the context for execution of the function.  <a href="#a43976f42dfc6c1af23e132d36265173a">More...</a><br/></td></tr>
<tr class="separator:a43976f42dfc6c1af23e132d36265173a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3c18a2cc66c56f840e6ee4310287f65"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ae3c18a2cc66c56f840e6ee4310287f65">Unprepare</a> ()=0</td></tr>
<tr class="memdesc:ae3c18a2cc66c56f840e6ee4310287f65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Frees resources held by the context.  <a href="#ae3c18a2cc66c56f840e6ee4310287f65">More...</a><br/></td></tr>
<tr class="separator:ae3c18a2cc66c56f840e6ee4310287f65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e52894432737acac2e1a422e496bf84"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a8e52894432737acac2e1a422e496bf84">Execute</a> ()=0</td></tr>
<tr class="memdesc:a8e52894432737acac2e1a422e496bf84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Executes the prepared function.  <a href="#a8e52894432737acac2e1a422e496bf84">More...</a><br/></td></tr>
<tr class="separator:a8e52894432737acac2e1a422e496bf84"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a374befd21b8c14de81ef0ed9d2dea334"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a374befd21b8c14de81ef0ed9d2dea334">Abort</a> ()=0</td></tr>
<tr class="memdesc:a374befd21b8c14de81ef0ed9d2dea334"><td class="mdescLeft">&#160;</td><td class="mdescRight">Aborts the execution.  <a href="#a374befd21b8c14de81ef0ed9d2dea334">More...</a><br/></td></tr>
<tr class="separator:a374befd21b8c14de81ef0ed9d2dea334"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4ac8be3586c46069b5870e40c86544a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ad4ac8be3586c46069b5870e40c86544a">Suspend</a> ()=0</td></tr>
<tr class="memdesc:ad4ac8be3586c46069b5870e40c86544a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Suspends the execution, which can then be resumed by calling Execute again.  <a href="#ad4ac8be3586c46069b5870e40c86544a">More...</a><br/></td></tr>
<tr class="separator:ad4ac8be3586c46069b5870e40c86544a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17024a9e1648f66711a3182b21676aa7"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a867f14b4137dd4602fda1e616b217a69">asEContextState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a17024a9e1648f66711a3182b21676aa7">GetState</a> () const =0</td></tr>
<tr class="memdesc:a17024a9e1648f66711a3182b21676aa7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of the context.  <a href="#a17024a9e1648f66711a3182b21676aa7">More...</a><br/></td></tr>
<tr class="separator:a17024a9e1648f66711a3182b21676aa7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8f7637a23d67e227d07f65621b6cdd6"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ad8f7637a23d67e227d07f65621b6cdd6">PushState</a> ()=0</td></tr>
<tr class="memdesc:ad8f7637a23d67e227d07f65621b6cdd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Backups the current state to prepare the context for a nested call.  <a href="#ad8f7637a23d67e227d07f65621b6cdd6">More...</a><br/></td></tr>
<tr class="separator:ad8f7637a23d67e227d07f65621b6cdd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d963974625e582799b5d911d182d9be"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a5d963974625e582799b5d911d182d9be">PopState</a> ()=0</td></tr>
<tr class="memdesc:a5d963974625e582799b5d911d182d9be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the state to resume previous script execution.  <a href="#a5d963974625e582799b5d911d182d9be">More...</a><br/></td></tr>
<tr class="separator:a5d963974625e582799b5d911d182d9be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a378f3bbfa04ef7b806300c5d4f1a0d65"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a378f3bbfa04ef7b806300c5d4f1a0d65">IsNested</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *nestCount=0) const =0</td></tr>
<tr class="memdesc:a378f3bbfa04ef7b806300c5d4f1a0d65"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the context has any nested calls.  <a href="#a378f3bbfa04ef7b806300c5d4f1a0d65">More...</a><br/></td></tr>
<tr class="separator:a378f3bbfa04ef7b806300c5d4f1a0d65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Object pointer for calling class methods</div></td></tr>
<tr class="memitem:a10d3c152b25d07584999f4d9fe5ce8b1"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a10d3c152b25d07584999f4d9fe5ce8b1">SetObject</a> (void *obj)=0</td></tr>
<tr class="memdesc:a10d3c152b25d07584999f4d9fe5ce8b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object for a class method call.  <a href="#a10d3c152b25d07584999f4d9fe5ce8b1">More...</a><br/></td></tr>
<tr class="separator:a10d3c152b25d07584999f4d9fe5ce8b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Arguments</div></td></tr>
<tr class="memitem:ac5ac8ce5bb209f43d4da620db5d271da"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ac5ac8ce5bb209f43d4da620db5d271da">SetArgByte</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, <a class="el" href="angelscript_8h.html#a48b3da7121b3abb56bff63b3beb0df63">asBYTE</a> value)=0</td></tr>
<tr class="memdesc:ac5ac8ce5bb209f43d4da620db5d271da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an 8-bit argument value.  <a href="#ac5ac8ce5bb209f43d4da620db5d271da">More...</a><br/></td></tr>
<tr class="separator:ac5ac8ce5bb209f43d4da620db5d271da"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac882e19b922c681052a0a88d69289a47"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ac882e19b922c681052a0a88d69289a47">SetArgWord</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, <a class="el" href="angelscript_8h.html#a340da175136fbe283932fa3c3442cea0">asWORD</a> value)=0</td></tr>
<tr class="memdesc:ac882e19b922c681052a0a88d69289a47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a 16-bit argument value.  <a href="#ac882e19b922c681052a0a88d69289a47">More...</a><br/></td></tr>
<tr class="separator:ac882e19b922c681052a0a88d69289a47"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a14cac831c1b419f552ca62a239dfcf45"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a14cac831c1b419f552ca62a239dfcf45">SetArgDWord</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> value)=0</td></tr>
<tr class="memdesc:a14cac831c1b419f552ca62a239dfcf45"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a 32-bit integer argument value.  <a href="#a14cac831c1b419f552ca62a239dfcf45">More...</a><br/></td></tr>
<tr class="separator:a14cac831c1b419f552ca62a239dfcf45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a742c870360588e99528f09bae6156482"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a742c870360588e99528f09bae6156482">SetArgQWord</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, <a class="el" href="angelscript_8h.html#a10aea5de212e440ffd6ec8fc0b17563d">asQWORD</a> value)=0</td></tr>
<tr class="memdesc:a742c870360588e99528f09bae6156482"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a 64-bit integer argument value.  <a href="#a742c870360588e99528f09bae6156482">More...</a><br/></td></tr>
<tr class="separator:a742c870360588e99528f09bae6156482"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a702a40cfe539e4e655a84e15161f8db8"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a702a40cfe539e4e655a84e15161f8db8">SetArgFloat</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, float value)=0</td></tr>
<tr class="memdesc:a702a40cfe539e4e655a84e15161f8db8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a float argument value.  <a href="#a702a40cfe539e4e655a84e15161f8db8">More...</a><br/></td></tr>
<tr class="separator:a702a40cfe539e4e655a84e15161f8db8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acbdddda3b80c37b70b8fd35c8e7383b9"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#acbdddda3b80c37b70b8fd35c8e7383b9">SetArgDouble</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, double value)=0</td></tr>
<tr class="memdesc:acbdddda3b80c37b70b8fd35c8e7383b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a double argument value.  <a href="#acbdddda3b80c37b70b8fd35c8e7383b9">More...</a><br/></td></tr>
<tr class="separator:acbdddda3b80c37b70b8fd35c8e7383b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8de8f21dfbb2cdf0becbabaa3e883ed"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#aa8de8f21dfbb2cdf0becbabaa3e883ed">SetArgAddress</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, void *addr)=0</td></tr>
<tr class="memdesc:aa8de8f21dfbb2cdf0becbabaa3e883ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the address of a reference or handle argument.  <a href="#aa8de8f21dfbb2cdf0becbabaa3e883ed">More...</a><br/></td></tr>
<tr class="separator:aa8de8f21dfbb2cdf0becbabaa3e883ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09044a12dfb2d44d19bd8a4025cb814d"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a09044a12dfb2d44d19bd8a4025cb814d">SetArgObject</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, void *obj)=0</td></tr>
<tr class="memdesc:a09044a12dfb2d44d19bd8a4025cb814d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the object argument value.  <a href="#a09044a12dfb2d44d19bd8a4025cb814d">More...</a><br/></td></tr>
<tr class="separator:a09044a12dfb2d44d19bd8a4025cb814d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a626d97ec564c92120e2abaf69f6e3698"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a626d97ec564c92120e2abaf69f6e3698">SetArgVarType</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg, void *ptr, int typeId)=0</td></tr>
<tr class="memdesc:a626d97ec564c92120e2abaf69f6e3698"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the variable argument value and type.  <a href="#a626d97ec564c92120e2abaf69f6e3698">More...</a><br/></td></tr>
<tr class="separator:a626d97ec564c92120e2abaf69f6e3698"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fbab94982862b30cd55996d4a24949c"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a0fbab94982862b30cd55996d4a24949c">GetAddressOfArg</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> arg)=0</td></tr>
<tr class="memdesc:a0fbab94982862b30cd55996d4a24949c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the argument for assignment.  <a href="#a0fbab94982862b30cd55996d4a24949c">More...</a><br/></td></tr>
<tr class="separator:a0fbab94982862b30cd55996d4a24949c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Return value</div></td></tr>
<tr class="memitem:a4c92259c03f1394310d3ea7d0774b3cb"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a48b3da7121b3abb56bff63b3beb0df63">asBYTE</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a4c92259c03f1394310d3ea7d0774b3cb">GetReturnByte</a> ()=0</td></tr>
<tr class="memdesc:a4c92259c03f1394310d3ea7d0774b3cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the 8-bit return value.  <a href="#a4c92259c03f1394310d3ea7d0774b3cb">More...</a><br/></td></tr>
<tr class="separator:a4c92259c03f1394310d3ea7d0774b3cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a3e054d35a6a361af67448d0a4930f9"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a340da175136fbe283932fa3c3442cea0">asWORD</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a5a3e054d35a6a361af67448d0a4930f9">GetReturnWord</a> ()=0</td></tr>
<tr class="memdesc:a5a3e054d35a6a361af67448d0a4930f9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the 16-bit return value.  <a href="#a5a3e054d35a6a361af67448d0a4930f9">More...</a><br/></td></tr>
<tr class="separator:a5a3e054d35a6a361af67448d0a4930f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43cd2fb72685aef96e8ddc622c9621bf"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a43cd2fb72685aef96e8ddc622c9621bf">GetReturnDWord</a> ()=0</td></tr>
<tr class="memdesc:a43cd2fb72685aef96e8ddc622c9621bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the 32-bit return value.  <a href="#a43cd2fb72685aef96e8ddc622c9621bf">More...</a><br/></td></tr>
<tr class="separator:a43cd2fb72685aef96e8ddc622c9621bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22bdd3b67dee3b1dbcb3f9f9a1f21fa4"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#a10aea5de212e440ffd6ec8fc0b17563d">asQWORD</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a22bdd3b67dee3b1dbcb3f9f9a1f21fa4">GetReturnQWord</a> ()=0</td></tr>
<tr class="memdesc:a22bdd3b67dee3b1dbcb3f9f9a1f21fa4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the 64-bit return value.  <a href="#a22bdd3b67dee3b1dbcb3f9f9a1f21fa4">More...</a><br/></td></tr>
<tr class="separator:a22bdd3b67dee3b1dbcb3f9f9a1f21fa4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ad325995e43fe6a929bcbd8fa592500"><td class="memItemLeft" align="right" valign="top">virtual float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a4ad325995e43fe6a929bcbd8fa592500">GetReturnFloat</a> ()=0</td></tr>
<tr class="memdesc:a4ad325995e43fe6a929bcbd8fa592500"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the float return value.  <a href="#a4ad325995e43fe6a929bcbd8fa592500">More...</a><br/></td></tr>
<tr class="separator:a4ad325995e43fe6a929bcbd8fa592500"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7e1ce03637cd5dd48ea652fdf7913bd7"><td class="memItemLeft" align="right" valign="top">virtual double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a7e1ce03637cd5dd48ea652fdf7913bd7">GetReturnDouble</a> ()=0</td></tr>
<tr class="memdesc:a7e1ce03637cd5dd48ea652fdf7913bd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the double return value.  <a href="#a7e1ce03637cd5dd48ea652fdf7913bd7">More...</a><br/></td></tr>
<tr class="separator:a7e1ce03637cd5dd48ea652fdf7913bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2438a7fcf46faa2267bdb94057cd1f2e"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a2438a7fcf46faa2267bdb94057cd1f2e">GetReturnAddress</a> ()=0</td></tr>
<tr class="memdesc:a2438a7fcf46faa2267bdb94057cd1f2e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address for a reference or handle return type.  <a href="#a2438a7fcf46faa2267bdb94057cd1f2e">More...</a><br/></td></tr>
<tr class="separator:a2438a7fcf46faa2267bdb94057cd1f2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d5739fac9c90bcd0fea55d01841d43a"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a6d5739fac9c90bcd0fea55d01841d43a">GetReturnObject</a> ()=0</td></tr>
<tr class="memdesc:a6d5739fac9c90bcd0fea55d01841d43a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return a pointer to the returned object.  <a href="#a6d5739fac9c90bcd0fea55d01841d43a">More...</a><br/></td></tr>
<tr class="separator:a6d5739fac9c90bcd0fea55d01841d43a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a889bf11123beba669637849c8e9b2b86"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a889bf11123beba669637849c8e9b2b86">GetAddressOfReturnValue</a> ()=0</td></tr>
<tr class="memdesc:a889bf11123beba669637849c8e9b2b86"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the returned value.  <a href="#a889bf11123beba669637849c8e9b2b86">More...</a><br/></td></tr>
<tr class="separator:a889bf11123beba669637849c8e9b2b86"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Exception handling</div></td></tr>
<tr class="memitem:a4ed608208cafdebe5676df079e27d392"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a4ed608208cafdebe5676df079e27d392">SetException</a> (const char *string)=0</td></tr>
<tr class="memdesc:a4ed608208cafdebe5676df079e27d392"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an exception, which aborts the execution.  <a href="#a4ed608208cafdebe5676df079e27d392">More...</a><br/></td></tr>
<tr class="separator:a4ed608208cafdebe5676df079e27d392"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22e3c351fe6b13ba0a62010dfc305080"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a22e3c351fe6b13ba0a62010dfc305080">GetExceptionLineNumber</a> (int *column=0, const char **sectionName=0)=0</td></tr>
<tr class="memdesc:a22e3c351fe6b13ba0a62010dfc305080"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the line number where the exception occurred.  <a href="#a22e3c351fe6b13ba0a62010dfc305080">More...</a><br/></td></tr>
<tr class="separator:a22e3c351fe6b13ba0a62010dfc305080"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e59aceec42080d29e08b44460ceb8b3"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a8e59aceec42080d29e08b44460ceb8b3">GetExceptionFunction</a> ()=0</td></tr>
<tr class="memdesc:a8e59aceec42080d29e08b44460ceb8b3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function where the exception occurred.  <a href="#a8e59aceec42080d29e08b44460ceb8b3">More...</a><br/></td></tr>
<tr class="separator:a8e59aceec42080d29e08b44460ceb8b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46e2411bc84e99f57e7d9fe2374bb479"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a46e2411bc84e99f57e7d9fe2374bb479">GetExceptionString</a> ()=0</td></tr>
<tr class="memdesc:a46e2411bc84e99f57e7d9fe2374bb479"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the exception string text.  <a href="#a46e2411bc84e99f57e7d9fe2374bb479">More...</a><br/></td></tr>
<tr class="separator:a46e2411bc84e99f57e7d9fe2374bb479"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d1f481473df3f7aefccc5bb6904e405"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a4d1f481473df3f7aefccc5bb6904e405">SetExceptionCallback</a> (<a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> callback, void *obj, int callConv)=0</td></tr>
<tr class="memdesc:a4d1f481473df3f7aefccc5bb6904e405"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an exception callback function. The function will be called if a script exception occurs.  <a href="#a4d1f481473df3f7aefccc5bb6904e405">More...</a><br/></td></tr>
<tr class="separator:a4d1f481473df3f7aefccc5bb6904e405"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb5cfe5703031fd76672a57d8afae547"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#acb5cfe5703031fd76672a57d8afae547">ClearExceptionCallback</a> ()=0</td></tr>
<tr class="separator:acb5cfe5703031fd76672a57d8afae547"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Debugging</div></td></tr>
<tr class="memitem:ae2747f643bf9a07364f922c460ef57dd"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ae2747f643bf9a07364f922c460ef57dd">SetLineCallback</a> (<a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a> callback, void *obj, int callConv)=0</td></tr>
<tr class="memdesc:ae2747f643bf9a07364f922c460ef57dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets a line callback function. The function will be called for each executed script statement.  <a href="#ae2747f643bf9a07364f922c460ef57dd">More...</a><br/></td></tr>
<tr class="separator:ae2747f643bf9a07364f922c460ef57dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3771cf314de339fa5d70edfbfcd88370"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a3771cf314de339fa5d70edfbfcd88370">ClearLineCallback</a> ()=0</td></tr>
<tr class="separator:a3771cf314de339fa5d70edfbfcd88370"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab359abc4563a8439338bfd655824bd7"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#aab359abc4563a8439338bfd655824bd7">GetCallstackSize</a> () const =0</td></tr>
<tr class="memdesc:aab359abc4563a8439338bfd655824bd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the size of the callstack, i.e. the number of functions that have yet to complete.  <a href="#aab359abc4563a8439338bfd655824bd7">More...</a><br/></td></tr>
<tr class="separator:aab359abc4563a8439338bfd655824bd7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c101300447f2909e5d188409a7180f6"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a1c101300447f2909e5d188409a7180f6">GetFunction</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a1c101300447f2909e5d188409a7180f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the function at the specified callstack level.  <a href="#a1c101300447f2909e5d188409a7180f6">More...</a><br/></td></tr>
<tr class="separator:a1c101300447f2909e5d188409a7180f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adf82981def59c6ec5dd9f74f034be2af"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#adf82981def59c6ec5dd9f74f034be2af">GetLineNumber</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0, int *column=0, const char **sectionName=0)=0</td></tr>
<tr class="memdesc:adf82981def59c6ec5dd9f74f034be2af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the line number at the specified callstack level.  <a href="#adf82981def59c6ec5dd9f74f034be2af">More...</a><br/></td></tr>
<tr class="separator:adf82981def59c6ec5dd9f74f034be2af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d735c6c7c5a166302cc4ba8ea38e3e8"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a3d735c6c7c5a166302cc4ba8ea38e3e8">GetVarCount</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a3d735c6c7c5a166302cc4ba8ea38e3e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of local variables at the specified callstack level.  <a href="#a3d735c6c7c5a166302cc4ba8ea38e3e8">More...</a><br/></td></tr>
<tr class="separator:a3d735c6c7c5a166302cc4ba8ea38e3e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac398eb23d9f17fcbeaa3f3809f8923d"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#aac398eb23d9f17fcbeaa3f3809f8923d">GetVarName</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> varIndex, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:aac398eb23d9f17fcbeaa3f3809f8923d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of local variable at the specified callstack level.  <a href="#aac398eb23d9f17fcbeaa3f3809f8923d">More...</a><br/></td></tr>
<tr class="separator:aac398eb23d9f17fcbeaa3f3809f8923d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3419d239a51d702870b1ab8ee1b7140"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#ae3419d239a51d702870b1ab8ee1b7140">GetVarDeclaration</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> varIndex, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0, bool includeNamespace=false)=0</td></tr>
<tr class="memdesc:ae3419d239a51d702870b1ab8ee1b7140"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the declaration of a local variable at the specified callstack level.  <a href="#ae3419d239a51d702870b1ab8ee1b7140">More...</a><br/></td></tr>
<tr class="separator:ae3419d239a51d702870b1ab8ee1b7140"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8684e1931e54dbfe53da763fc334413d"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a8684e1931e54dbfe53da763fc334413d">GetVarTypeId</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> varIndex, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a8684e1931e54dbfe53da763fc334413d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type id of a local variable at the specified callstack level.  <a href="#a8684e1931e54dbfe53da763fc334413d">More...</a><br/></td></tr>
<tr class="separator:a8684e1931e54dbfe53da763fc334413d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc916505d79de321a2ab2b46b1c61fb7"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#acc916505d79de321a2ab2b46b1c61fb7">GetAddressOfVar</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> varIndex, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:acc916505d79de321a2ab2b46b1c61fb7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to a local variable at the specified callstack level.  <a href="#acc916505d79de321a2ab2b46b1c61fb7">More...</a><br/></td></tr>
<tr class="separator:acc916505d79de321a2ab2b46b1c61fb7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45fcf7d8d711d5ec5cb9927e7839387a"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a45fcf7d8d711d5ec5cb9927e7839387a">IsVarInScope</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> varIndex, <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a45fcf7d8d711d5ec5cb9927e7839387a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Informs whether the variable is in scope at the current program position.  <a href="#a45fcf7d8d711d5ec5cb9927e7839387a">More...</a><br/></td></tr>
<tr class="separator:a45fcf7d8d711d5ec5cb9927e7839387a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a404681f8950c1ebd9382d30ef1ed3b89"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a404681f8950c1ebd9382d30ef1ed3b89">GetThisTypeId</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a404681f8950c1ebd9382d30ef1ed3b89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the type id of the object, if a class method is being executed.  <a href="#a404681f8950c1ebd9382d30ef1ed3b89">More...</a><br/></td></tr>
<tr class="separator:a404681f8950c1ebd9382d30ef1ed3b89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f6761a7a0c872dda681d8e180830ff9"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a4f6761a7a0c872dda681d8e180830ff9">GetThisPointer</a> (<a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> stackLevel=0)=0</td></tr>
<tr class="memdesc:a4f6761a7a0c872dda681d8e180830ff9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a pointer to the object, if a class method is being executed.  <a href="#a4f6761a7a0c872dda681d8e180830ff9">More...</a><br/></td></tr>
<tr class="separator:a4f6761a7a0c872dda681d8e180830ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a214cc16c4dd889072c1c24c089223a6a"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a214cc16c4dd889072c1c24c089223a6a">GetSystemFunction</a> ()=0</td></tr>
<tr class="memdesc:a214cc16c4dd889072c1c24c089223a6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the registered function that is currently being called by the context.  <a href="#a214cc16c4dd889072c1c24c089223a6a">More...</a><br/></td></tr>
<tr class="separator:a214cc16c4dd889072c1c24c089223a6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">User data</div></td></tr>
<tr class="memitem:a263dc70abb2a8c77adcea7c9ede0a479"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a263dc70abb2a8c77adcea7c9ede0a479">SetUserData</a> (void *data, <a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0)=0</td></tr>
<tr class="memdesc:a263dc70abb2a8c77adcea7c9ede0a479"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register the memory address of some user data.  <a href="#a263dc70abb2a8c77adcea7c9ede0a479">More...</a><br/></td></tr>
<tr class="separator:a263dc70abb2a8c77adcea7c9ede0a479"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f8503675abfd473915d66a92c6e6df7"><td class="memItemLeft" align="right" valign="top">virtual void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classas_i_script_context.html#a0f8503675abfd473915d66a92c6e6df7">GetUserData</a> (<a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a> type=0) const =0</td></tr>
<tr class="memdesc:a0f8503675abfd473915d66a92c6e6df7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the previously registered user data.  <a href="#a0f8503675abfd473915d66a92c6e6df7">More...</a><br/></td></tr>
<tr class="separator:a0f8503675abfd473915d66a92c6e6df7"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The script context provides the interface for a single script execution. The object stores the call stack where the local variables used by the execution are kept, however it doesn't keep copies of global variables as these are stored in the <a class="el" href="classas_i_script_module.html">asIScriptModule</a>, and only referenced by the context.</p>
<p>The value stored in a global variable is shared between all contexts, as they all refer to the same memory. This means that the global variables outlive the execution of a script, and will keep their values between executions.</p>
<p>It is seldom necessary to maintain more than one script context at a time, with the only exceptions being when a script calls an application function that in turn calls another script before returning, and if multiple scripts are running in parallel.</p>
<p>Try to avoid associating a unique context with each object that may need to call scripts. Instead keep a shared pool of contexts that can be requested by the objects on a need-to basis. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a374befd21b8c14de81ef0ed9d2dea334"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Abort </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>Invalid context object.</td></tr>
  </table>
  </dd>
</dl>
<p>Aborts the current execution of a script.</p>
<p>If the call to Abort is done from within a function called by the script, it will only take effect after that function returns. </p>

</div>
</div>
<a class="anchor" id="a5e24f4cb5773f732a1d46b818d963a1d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::AddRef </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of references to this object.</dd></dl>
<p>Call this method when storing an additional reference to the object. Remember that the first reference that is received from <a class="el" href="classas_i_script_engine.html#a2630e1cd03ffab0fee9b820bf0afe42a">asIScriptEngine::CreateContext</a> is already accounted for. </p>

</div>
</div>
<a class="anchor" id="acb5cfe5703031fd76672a57d8afae547"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptContext::ClearExceptionCallback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Removes a previously registered callback. </p>

</div>
</div>
<a class="anchor" id="a3771cf314de339fa5d70edfbfcd88370"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void asIScriptContext::ClearLineCallback </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Removes a previously registered callback. </p>

</div>
</div>
<a class="anchor" id="a8e52894432737acac2e1a422e496bf84"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Execute </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error, or one of <a class="el" href="angelscript_8h.html#a867f14b4137dd4602fda1e616b217a69">asEContextState</a>. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not prepared or it is not in suspended state. </td></tr>
    <tr><td class="paramname">asEXECUTION_ABORTED</td><td>The execution was aborted with a call to <a class="el" href="classas_i_script_context.html#a374befd21b8c14de81ef0ed9d2dea334">Abort</a>. </td></tr>
    <tr><td class="paramname">asEXECUTION_SUSPENDED</td><td>The execution was suspended with a call to <a class="el" href="classas_i_script_context.html#ad4ac8be3586c46069b5870e40c86544a">Suspend</a>. </td></tr>
    <tr><td class="paramname">asEXECUTION_FINISHED</td><td>The execution finished successfully. </td></tr>
    <tr><td class="paramname">asEXECUTION_EXCEPTION</td><td>The execution ended with an exception.</td></tr>
  </table>
  </dd>
</dl>
<p>Executes the prepared function until the script returns. If the execution was previously suspended the function resumes where it left of.</p>
<p>Note that if the script freezes, e.g. if trapped in a never ending loop, you may call <a class="el" href="classas_i_script_context.html#a374befd21b8c14de81ef0ed9d2dea334">Abort</a> from another thread to stop execution.</p>
<p>If the function returns asEXECUTION_EXCEPTION, use the <a class="el" href="classas_i_script_context.html#a46e2411bc84e99f57e7d9fe2374bb479">GetExceptionString</a>, <a class="el" href="classas_i_script_context.html#a8e59aceec42080d29e08b44460ceb8b3">GetExceptionFunction</a>, and <a class="el" href="classas_i_script_context.html#a22e3c351fe6b13ba0a62010dfc305080">GetExceptionLineNumber</a> to obtain more information on the exception and where it occurred.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_call_script_func.html">Calling a script function</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a0fbab94982862b30cd55996d4a24949c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetAddressOfArg </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the argument on the stack.</dd></dl>
<p>This method returns a pointer to the argument on the stack for assignment. For object handles, you should increment the reference counter. For object values, you should pass a pointer to a copy of the object. </p>

</div>
</div>
<a class="anchor" id="a889bf11123beba669637849c8e9b2b86"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetAddressOfReturnValue </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A pointer to the return value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="acc916505d79de321a2ab2b46b1c61fb7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetAddressOfVar </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>varIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">varIndex</td><td>The index of the variable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to the variable.</dd></dl>
<p>Returns a pointer to the variable, so that its value can be read and written. The address is valid until the script function returns.</p>
<p>Note that object variables may not be initalized at all moments, thus you must verify if the address returned points to a null pointer, before you try to dereference it. </p>

</div>
</div>
<a class="anchor" id="aab359abc4563a8439338bfd655824bd7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> asIScriptContext::GetCallstackSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of functions on the call stack, including the current function.</dd></dl>
<p>This methods returns the size of the callstack. It can be used to enumerate the callstack in order to generate a detailed report when an exception occurs, or for debugging running scripts. </p>

</div>
</div>
<a class="anchor" id="a07f12016c5435aec5b63449abb6e4d8d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_engine.html">asIScriptEngine</a>* asIScriptContext::GetEngine </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A pointer to the engine. </dd></dl>

</div>
</div>
<a class="anchor" id="a8e59aceec42080d29e08b44460ceb8b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptContext::GetExceptionFunction </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The function where the exception occurred. </dd></dl>

</div>
</div>
<a class="anchor" id="a22e3c351fe6b13ba0a62010dfc305080"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::GetExceptionLineNumber </td>
          <td>(</td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>column</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>sectionName</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">column</td><td>The variable will receive the column number. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sectionName</td><td>The variable will receive the name of the script section. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The line number where the exception occurred.</dd></dl>
<p>This method returns the line number where the exception ocurred. The line number is relative to the script section where the function was implemented.</p>
<p>Observe that the returned sectionName can be null, e.g. if the function in which the exception occurred was a generated stub function. </p>

</div>
</div>
<a class="anchor" id="a46e2411bc84e99f57e7d9fe2374bb479"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptContext::GetExceptionString </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A null terminated string describing the exception that occurred. </dd></dl>

</div>
</div>
<a class="anchor" id="a1c101300447f2909e5d188409a7180f6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptContext::GetFunction </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The function descriptor on the call stack referred to by the index.</dd></dl>
<p>Index 0 refers to the current function, index 1 to the calling function, and so on. The highest index is the originating function that the application called.</p>
<p>The returned value will be null if the stackLevel is invalid, or if the requested stack level doesn't have a defined function. The latter scenario happens when the engine performs a nested call internally, e.g. to call a constructor for a script object indirectly created.</p>
<p>If the application performs a nested call, then the returned value will give the application registered function that was called by the previous script.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="classas_i_script_context.html#ad8f7637a23d67e227d07f65621b6cdd6">PushState</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adf82981def59c6ec5dd9f74f034be2af"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::GetLineNumber </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>column</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&#160;</td>
          <td class="paramname"><em>sectionName</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">column</td><td>The variable will receive the column number. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sectionName</td><td>The variable will receive the name of the script section. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The line number for the call stack level referred to by the index.</dd></dl>
<p>This function returns the line number, and optionally the column number and the name of the script section where the program is current at.</p>
<p>The sectionName pointer will point to an internal buffer, so do not deallocate it. If the function doesn't have any debug info sectionName will be set to null. </p>

</div>
</div>
<a class="anchor" id="a2438a7fcf46faa2267bdb94057cd1f2e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetReturnAddress </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The address value returned from the script function, or 0 on error.</dd></dl>
<p>The method doesn't increase the reference counter with this call, so if you store the pointer of a reference counted object you need to increase the reference manually otherwise the object will be released when the context is released or reused. </p>

</div>
</div>
<a class="anchor" id="a4c92259c03f1394310d3ea7d0774b3cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a48b3da7121b3abb56bff63b3beb0df63">asBYTE</a> asIScriptContext::GetReturnByte </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The 1 byte value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a7e1ce03637cd5dd48ea652fdf7913bd7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual double asIScriptContext::GetReturnDouble </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The double value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a43cd2fb72685aef96e8ddc622c9621bf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a> asIScriptContext::GetReturnDWord </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The 4 byte value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a4ad325995e43fe6a929bcbd8fa592500"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual float asIScriptContext::GetReturnFloat </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The float value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a6d5739fac9c90bcd0fea55d01841d43a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetReturnObject </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A pointer to the object returned from the script function, or 0 on error.</dd></dl>
<p>The method doesn't increase the reference counter with this call, so if you store the pointer of a reference counted object you need to increase the reference manually otherwise the object will be released when the context is released or reused. </p>

</div>
</div>
<a class="anchor" id="a22bdd3b67dee3b1dbcb3f9f9a1f21fa4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a10aea5de212e440ffd6ec8fc0b17563d">asQWORD</a> asIScriptContext::GetReturnQWord </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The 8 byte value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a5a3e054d35a6a361af67448d0a4930f9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a340da175136fbe283932fa3c3442cea0">asWORD</a> asIScriptContext::GetReturnWord </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The 2 byte value returned from the script function, or 0 on error. </dd></dl>

</div>
</div>
<a class="anchor" id="a17024a9e1648f66711a3182b21676aa7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="angelscript_8h.html#a867f14b4137dd4602fda1e616b217a69">asEContextState</a> asIScriptContext::GetState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The current state of the context. </dd></dl>

</div>
</div>
<a class="anchor" id="a214cc16c4dd889072c1c24c089223a6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classas_i_script_function.html">asIScriptFunction</a>* asIScriptContext::GetSystemFunction </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>Returns the registered function that is currently being called, or null if no registered function is being called at the moment. </dd></dl>

</div>
</div>
<a class="anchor" id="a4f6761a7a0c872dda681d8e180830ff9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetThisPointer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a pointer to the object if it is a class method. </dd></dl>

</div>
</div>
<a class="anchor" id="a404681f8950c1ebd9382d30ef1ed3b89"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::GetThisTypeId </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns the type id of the object if it is a class method. </dd></dl>

</div>
</div>
<a class="anchor" id="a0f8503675abfd473915d66a92c6e6df7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::GetUserData </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying the user data to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The pointer to the user data. </dd></dl>

</div>
</div>
<a class="anchor" id="a3d735c6c7c5a166302cc4ba8ea38e3e8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::GetVarCount </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of variables in the function on the call stack level. Or negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The stackLevel is invalid.</td></tr>
  </table>
  </dd>
</dl>
<p>Returns the number of declared variables, including the parameters, in the function on the stack. </p>

</div>
</div>
<a class="anchor" id="ae3419d239a51d702870b1ab8ee1b7140"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptContext::GetVarDeclaration </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>varIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>includeNamespace</em> = <code>false</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">varIndex</td><td>The index of the variable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">includeNamespace</td><td>Set to true if the namespace should be included in the declaration. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A null terminated string with the declaration of the variable. </dd></dl>

</div>
</div>
<a class="anchor" id="aac398eb23d9f17fcbeaa3f3809f8923d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* asIScriptContext::GetVarName </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>varIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">varIndex</td><td>The index of the variable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A null terminated string with the name of the variable. </dd></dl>

</div>
</div>
<a class="anchor" id="a8684e1931e54dbfe53da763fc334413d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::GetVarTypeId </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>varIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">varIndex</td><td>The index of the variable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The type id of the variable, or a negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asINVALID_ARG</td><td>The index or stack level is invalid. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a378f3bbfa04ef7b806300c5d4f1a0d65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool asIScriptContext::IsNested </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a> *&#160;</td>
          <td class="paramname"><em>nestCount</em> = <code>0</code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">nestCount</td><td>This argument receives the nesting level. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if there are any nested calls. </dd></dl>

</div>
</div>
<a class="anchor" id="a45fcf7d8d711d5ec5cb9927e7839387a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool asIScriptContext::IsVarInScope </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>varIndex</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>stackLevel</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">varIndex</td><td>The index of the variable. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">stackLevel</td><td>The index on the call stack. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if variable is in scope.</dd></dl>
<p>This method can be used to determine if a variable is currently visible from the current program position. This is especially useful if multiple variables with the same name is declared in different scopes. </p>

</div>
</div>
<a class="anchor" id="a5d963974625e582799b5d911d182d9be"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::PopState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>The state couldn't be restored. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a43976f42dfc6c1af23e132d36265173a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Prepare </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classas_i_script_function.html">asIScriptFunction</a> *&#160;</td>
          <td class="paramname"><em>func</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">func</td><td>The id of the function/method that will be executed. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_ACTIVE</td><td>The context is still active or suspended. </td></tr>
    <tr><td class="paramname">asNO_FUNCTION</td><td>The function pointer is null. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The function is from a different engine than the context. </td></tr>
    <tr><td class="paramname">asOUT_OF_MEMORY</td><td>The context ran out of memory while allocating call stack.</td></tr>
  </table>
  </dd>
</dl>
<p>This method prepares the context for executeion of a script function. It allocates the stack space required and reserves space for return value and parameters. The default value for parameters and return value is 0.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_call_script_func.html">Calling a script function</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ad8f7637a23d67e227d07f65621b6cdd6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::PushState </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>The state couldn't be pushed.</td></tr>
  </table>
  </dd>
</dl>
<p>This method can be invoked on an active context in order to reuse the context for a nested call, e.g. when a function called by a script needs to call another script before returning. After the method returns with success the method <a class="el" href="classas_i_script_context.html#a43976f42dfc6c1af23e132d36265173a">Prepare()</a> shall be invoked to prepare the new execution.</p>
<p>By reusing an active context the application can avoid creating a temporary context, and thus improve the run time performance.</p>
<p>For each successful call to <a class="el" href="classas_i_script_context.html#ad8f7637a23d67e227d07f65621b6cdd6" title="Backups the current state to prepare the context for a nested call.">PushState()</a> the method <a class="el" href="classas_i_script_context.html#a5d963974625e582799b5d911d182d9be">PopState()</a> must be called to return the state in order to resume the previous script execution. </p>

</div>
</div>
<a class="anchor" id="a1b13a5f3e58627e9ff4300c0c6f0f3cf"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Release </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of references to this object.</dd></dl>
<p>Call this method when you will no longer use the references that you own. </p>

</div>
</div>
<a class="anchor" id="aa8de8f21dfbb2cdf0becbabaa3e883ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgAddress </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>addr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>The address that should be passed in the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a reference or an object handle.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets an address argument, e.g. an object handle or a reference. </p>

</div>
</div>
<a class="anchor" id="ac5ac8ce5bb209f43d4da620db5d271da"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgByte </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a48b3da7121b3abb56bff63b3beb0df63">asBYTE</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not an 8-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets a 1 byte argument. </p>

</div>
</div>
<a class="anchor" id="acbdddda3b80c37b70b8fd35c8e7383b9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgDouble </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a 64-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets a double argument. </p>

</div>
</div>
<a class="anchor" id="a14cac831c1b419f552ca62a239dfcf45"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgDWord </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a5428f0c940201e5f3bbb28304aeb81bc">asDWORD</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a 32-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets a 4 byte argument. </p>

</div>
</div>
<a class="anchor" id="a702a40cfe539e4e655a84e15161f8db8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgFloat </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a 32-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets a float argument. </p>

</div>
</div>
<a class="anchor" id="a09044a12dfb2d44d19bd8a4025cb814d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgObject </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not an object or handle.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets an object argument. If the argument is an object handle AngelScript will increment the reference for the object. If the argument is an object value AngelScript will make a copy of the object. </p>

</div>
</div>
<a class="anchor" id="a742c870360588e99528f09bae6156482"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgQWord </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a10aea5de212e440ffd6ec8fc0b17563d">asQWORD</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a 64-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets an 8 byte argument. </p>

</div>
</div>
<a class="anchor" id="a626d97ec564c92120e2abaf69f6e3698"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgVarType </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>typeId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ptr</td><td>A pointer to the value. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">typeId</td><td>The type id of the value. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a variable type.</td></tr>
  </table>
  </dd>
</dl>
<p>This method should be used when setting the argument for functions with <a class="el" href="doc_adv_var_type.html">variable parameter types</a>. </p>

</div>
</div>
<a class="anchor" id="ac882e19b922c681052a0a88d69289a47"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetArgWord </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#ac8186f029686800b7ce36bde4a55c815">asUINT</a>&#160;</td>
          <td class="paramname"><em>arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a340da175136fbe283932fa3c3442cea0">asWORD</a>&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">arg</td><td>The argument index. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value of the argument. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td>The <em>arg</em> is larger than the number of arguments in the prepared function. </td></tr>
    <tr><td class="paramname">asINVALID_TYPE</td><td>The argument is not a 16-bit value.</td></tr>
  </table>
  </dd>
</dl>
<p>Sets a 2 byte argument. </p>

</div>
</div>
<a class="anchor" id="a4ed608208cafdebe5676df079e27d392"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetException </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>string</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>A string that describes the exception that occurred. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>The context isn't currently calling an application registered function.</td></tr>
  </table>
  </dd>
</dl>
<p>This method sets a script exception in the context. This will only work if the context is currently calling a system function, thus this method can only be used for system functions.</p>
<p>Note that if your system function sets an exception, it should not return any object references because the engine will not release the returned reference. </p>

</div>
</div>
<a class="anchor" id="a4d1f481473df3f7aefccc5bb6904e405"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetExceptionCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>callConv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The callback function/method that should be called upon an exception. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The object pointer on which the callback is called. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention of the callback function/method. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>Calling convention must not be asCALL_GENERIC, or the routine's calling convention is not supported. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td><em>obj</em> must not be null for class methods. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td><em>callConv</em> isn't compatible with the routines' calling convention.</td></tr>
  </table>
  </dd>
</dl>
<p>This callback function will be called by the VM when a script exception is raised, which allow the application to examine the callstack and generate a detailed report before the callstack is cleaned up.</p>
<p>See <a class="el" href="classas_i_script_context.html#ae2747f643bf9a07364f922c460ef57dd">SetLineCallback</a> for details on the calling convention. </p>

</div>
</div>
<a class="anchor" id="ae2747f643bf9a07364f922c460ef57dd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetLineCallback </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structas_s_func_ptr.html">asSFuncPtr</a>&#160;</td>
          <td class="paramname"><em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>callConv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The callback function/method that should be called for each script line executed. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>The object pointer on which the callback is called. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">callConv</td><td>The calling convention of the callback function/method. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asNOT_SUPPORTED</td><td>Calling convention must not be asCALL_GENERIC, or the routine's calling convention is not supported. </td></tr>
    <tr><td class="paramname">asINVALID_ARG</td><td><em>obj</em> must not be null for class methods. </td></tr>
    <tr><td class="paramname">asWRONG_CALLING_CONV</td><td><em>callConv</em> isn't compatible with the routines' calling convention.</td></tr>
  </table>
  </dd>
</dl>
<p>This function sets a callback function that will be called by the VM each time the SUSPEND instruction is encounted. Generally this instruction is placed before each statement. Thus by setting this callback function it is possible to monitor the execution, and suspend the execution at application defined locations.</p>
<p>The callback function can be either a global function or a class method. For a global function the VM will pass two parameters, first the context pointer and then the object pointer specified by the application. For a class method, the VM will call the method using the object pointer as the owner.</p>
<div class="fragment"><div class="line"><span class="keywordtype">void</span> Callback(<a class="code" href="classas_i_script_context.html" title="The interface to the virtual machine.">asIScriptContext</a> *ctx, <span class="keywordtype">void</span> *obj);</div>
<div class="line"><span class="keywordtype">void</span> Object::Callback(<a class="code" href="classas_i_script_context.html" title="The interface to the virtual machine.">asIScriptContext</a> *ctx);</div>
</div><!-- fragment --><p>The global function can use either <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a68ae43cc91cdfc3fa4590c9e6164e4f4">asCALL_CDECL</a> or <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a138a08e8363ebc695636dfe987674e2e">asCALL_STDCALL</a>, and the class method can use either <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4aea516c8742acc1edff6a43dc1bb09e96">asCALL_THISCALL</a>, <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4ac08652c72f1cc0dc81c37812fab0e253">asCALL_CDECL_OBJLAST</a>, or <a class="el" href="angelscript_8h.html#a3ec92ea3c4762e44c2df788ceccdd1e4a7c3e88628c2722d0a103b411d4aceaa0">asCALL_CDECL_OBJFIRST</a>.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_debug.html">Debugging scripts</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a10d3c152b25d07584999f4d9fe5ce8b1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::SetObject </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>obj</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">obj</td><td>A pointer to the object. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_NOT_PREPARED</td><td>The context is not in prepared state. </td></tr>
    <tr><td class="paramname">asERROR</td><td>The prepared function is not a class method.</td></tr>
  </table>
  </dd>
</dl>
<p>This method sets object pointer when calling class methods. </p>

</div>
</div>
<a class="anchor" id="a263dc70abb2a8c77adcea7c9ede0a479"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* asIScriptContext::SetUserData </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="angelscript_8h.html#a76fc6994aba7ff6c685a62c273c057e3">asPWORD</a>&#160;</td>
          <td class="paramname"><em>type</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>A pointer to the user data. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>An identifier specifying the user data to set. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The previous pointer stored in the context.</dd></dl>
<p>This method allows the application to associate a value, e.g. a pointer, with the context instance.</p>
<p>The type values 1000 through 1999 are reserved for use by the official add-ons.</p>
<p>Optionally, a callback function can be <a class="el" href="classas_i_script_engine.html#acaced7eb9ebe013ede23f7593daf58e3">registered</a> to clean up the user data when the context is destroyed. As the callback is registered with the engine, it is only necessary to do it once, even if more than one context is used. </p>

</div>
</div>
<a class="anchor" id="ad4ac8be3586c46069b5870e40c86544a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Suspend </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asERROR</td><td>Invalid context object.</td></tr>
  </table>
  </dd>
</dl>
<p>Suspends the current execution of a script. The execution can then be resumed by calling <a class="el" href="classas_i_script_context.html#a8e52894432737acac2e1a422e496bf84">Execute</a> again.</p>
<p>If the call to Suspend is done from within a function called by the script, it will only take effect after that function returns.</p>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="doc_call_script_func.html">Calling a script function</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ae3c18a2cc66c56f840e6ee4310287f65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual int asIScriptContext::Unprepare </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>A negative value on error. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
  <table class="retval">
    <tr><td class="paramname">asCONTEXT_ACTIVE</td><td>The context is still active or suspended.</td></tr>
  </table>
  </dd>
</dl>
<p>This function frees resources held by the context. It's usually not necessary to call this function as the resources are automatically freed when the context is released, or reused when <a class="el" href="classas_i_script_context.html#a43976f42dfc6c1af23e132d36265173a">Prepare</a> is called again. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="angelscript_8h.html">angelscript.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="classas_i_script_context.html">asIScriptContext</a></li>
    <li class="footer">Generated on Sun Dec 18 2016 12:35:31 for AngelScript by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3.1 </li>
  </ul>
</div>
</body>
</html>
